//鞍点，该元素在行上最大，在列上最小，也可能没有鞍点
//思路--先找出在每一行上最大的元素，判断在其处在的列上是否是最小的，若是最小的，则它是鞍点，反之下一行，若一直到最后一行还是没有找到
//说明这个数列不存在鞍点
#include<stdio.h>
int main()
{
    int i,j,k,a[3][3];
    int hangmax,maxj,flag;
     printf("-----输入一个3X3的矩阵----\n");
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            scanf("%d",&a[i][j]);
            
        }
    }
    printf("------输入的矩阵为------\n");
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++,k++)
        {
            if(k%3==0)printf("\n");
            printf("%5d",a[i][j]);
        }
    }
    //---------------------------------------------------------------------//
    //---------------------------------------------------------------------//
    //1.找出每一行的最大值,然后马上和其所在列的每一个元素做对比？？？？？
    //这个数在它这一列不是最大，直接排除  不好，复杂   ×××××××××××××××
    //2.先分别找出三行中最大的数，作比较，选最大的那一个，在其列上作比较 好，简单    √√√√√√√√√√√√√√√√√√
    printf("\n");

    int max,min,col=0,row=0;//找出每行最大，尝试添加变量，打开思路，方便后续操作
    for(int i=0;i<3;i++)
    {
        max=a[i][0];
        for(int j=0;j<3;j++)
        {
            if(a[i][j]>=max)
            {
                max=a[i][j];
                col=j;
            }
        }   
        min=a[0][col];
        for(k=0;k<3;k++)//找出每列最小
        {
            if(a[k][col]<min){
                min=a[k][col];
                row=k;
            }
        }
         if(min==max)
    {
        printf("鞍点的位置在%5d%5d，值为%5d",row,col,a[row][col]);
        break;
    }
    }
    if(min!=max)
    {
        printf("NO!");
    }
    
   
}